package com.papercutting.platform.util;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

/**
 * 图片URL处理工具类
 */
@Component
public class ImageUrlUtil {
    
    @Value("${app.server.base-url:http://localhost:8080}")
    private String baseUrl;
    
    @Value("${server.servlet.context-path:/}")
    private String contextPath;
    
    /**
     * 处理图片URL，确保返回完整的访问路径
     * @param imageUrl 原始图片URL
     * @return 处理后的完整URL
     */
    public String processImageUrl(String imageUrl) {
        if (!StringUtils.hasText(imageUrl)) {
            return null;
        }
        
        // 如果已经是完整的URL（包含协议），直接返回
        if (imageUrl.startsWith("http://") || imageUrl.startsWith("https://")) {
            return imageUrl;
        }
        
        // 如果是相对路径，拼接完整的服务器URL
        return buildFullUrl(imageUrl);
    }
    
    /**
     * 获取完整的服务器URL
     * @param relativePath 相对路径
     * @return 完整的服务器URL
     */
    public String getFullServerUrl(String relativePath) {
        if (!StringUtils.hasText(relativePath)) {
            return null;
        }
        
        // 如果已经是完整的URL，直接返回
        if (relativePath.startsWith("http://") || relativePath.startsWith("https://")) {
            return relativePath;
        }
        
        return buildFullUrl(relativePath);
    }
    
    /**
     * 构建完整的URL
     * @param relativePath 相对路径
     * @return 完整的URL
     */
    private String buildFullUrl(String relativePath) {
        if (!StringUtils.hasText(relativePath)) {
            return null;
        }
        
        // 确保路径以 / 开头
        if (!relativePath.startsWith("/")) {
            relativePath = "/" + relativePath;
        }
        
        // 移除 baseUrl 末尾的 /，避免双斜杠
        String url = baseUrl;
        if (url.endsWith("/")) {
            url = url.substring(0, url.length() - 1);
        }
        
        // 拼接完整URL
        return url + relativePath;
    }
    
    /**
     * 验证图片URL是否有效
     * @param imageUrl 图片URL
     * @return 是否有效
     */
    public boolean isValidImageUrl(String imageUrl) {
        if (!StringUtils.hasText(imageUrl)) {
            return false;
        }
        
        // 检查是否是支持的图片格式
        String lowerUrl = imageUrl.toLowerCase();
        return lowerUrl.endsWith(".jpg") || 
               lowerUrl.endsWith(".jpeg") || 
               lowerUrl.endsWith(".png") || 
               lowerUrl.endsWith(".gif") || 
               lowerUrl.endsWith(".webp") ||
               lowerUrl.contains("unsplash.com") ||
               lowerUrl.contains("images.") ||
               lowerUrl.contains("/uploads/") ||
               lowerUrl.contains("/images/");
    }
    
    /**
     * 获取默认图片URL
     * @param type 图片类型
     * @return 默认图片URL
     */
    public String getDefaultImageUrl(String type) {
        switch (type) {
            case "banner":
                return "https://images.unsplash.com/photo-1578662996442-48f60103fc96?w=1200&h=400&fit=crop&crop=center";
            case "culture":
                return "https://images.unsplash.com/photo-1513475382585-d06e58bcb0e0?w=800&h=600&fit=crop&crop=center";
            case "tutorial":
                return "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=800&h=600&fit=crop&crop=center";
            case "news":
                return "https://images.unsplash.com/photo-1581833971358-2c8b550f87b3?w=800&h=600&fit=crop&crop=center";
            case "user":
                return "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=200&h=200&fit=crop&crop=face";
            default:
                return "https://images.unsplash.com/photo-1578662996442-48f60103fc96?w=800&h=600&fit=crop&crop=center";
        }
    }
}
